<?php
class Factory {
    private static $obj;      //对象存储句柄
    public static function initAction() {
        //单入口模式，模块的实例化全交给这里了
        $a = self::getA();
        //如果后台管理员尚未登录，则后台模块不允许非登录用户进入
        if(Validate::inArray($a,array('Manage','Nav','Level'))) {
            if(!isset($_SESSION['admin'])) {
                Redirect::getInstance()->succ('?a=admin&m=login');
            }
        }
        //判断模块是否存在
        if(!file_exists(ROOT_PATH.'/controller/'.$a.'Action.class.php')) exit('<h2>粗大事了[Error]:未找到'.$a.'Action模块!</h2>');
        //使用eval函数可以把php字符串当成php代码来执行
        eval('self::$obj = new '.$a.'Action();');
        return self::$obj;
    }

    //动态获得model
    public static function initModel() {
        $a = self::getA();
        if(file_exists(ROOT_PATH.'/model/'.$a.'Model.class.php'))
            eval('self::$obj = new '.$a.'Model();');
        return self::$obj;
    }

    private static function getA() {
        if(isset($_GET['a']) && !empty($_GET['a'])){
            return ucfirst($_GET['a']);
        }
        return 'Index';
    }
}

?>